package modelo;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

@Entity
public class OrdenCompra {
	@Id
	private int NroOC;
	private Date Fecha;
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "NroOC")
	private Set<ItemOC> ItemsOC;
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "NroOC")
	private List<Remito> remitos;

	public OrdenCompra(int nroOC, Date fecha) {
		super();
		NroOC = nroOC;
		Fecha = fecha;
		ItemsOC = new HashSet<ItemOC>();
		this.remitos = new ArrayList<Remito>();
	}

	@ManyToOne
	private Proveedor proveedor;

	public Proveedor getProveedor() {
		return proveedor;
	}

	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}

	public OrdenCompra(Date fecha) {
		super();
		Fecha = fecha;
	}

	/**
	 * @return the nroOC
	 */
	public int getNroOC() {
		return NroOC;
	}

	/**
	 * @param nroOC
	 *            the nroOC to set
	 */
	public void setNroOC(int nroOC) {
		NroOC = nroOC;
	}

	/**
	 * @return the fecha
	 */
	public Date getFecha() {
		return Fecha;
	}

	/**
	 * @param fecha
	 *            the fecha to set
	 */
	public void setFecha(Date fecha) {
		Fecha = fecha;
	}

	/**
	 * @return the items
	 */
	public Set<ItemOC> getItems() {
		return ItemsOC;
	}

	/**
	 * @param items
	 *            the items to set
	 */
	public void setItems(HashSet<ItemOC> items) {
		ItemsOC = items;
	}

	/**
	 * @return the remitos
	 */
	public List<Remito> getRemitos() {
		return remitos;
	}

	/**
	 * @param remitos
	 *            the remitos to set
	 */
	public void setRemitos(ArrayList<Remito> remitos) {
		this.remitos = remitos;
	}

	public void agregarItemOC(Rodamiento rodamiento, int cantidad) {
		ItemsOC.add(new ItemOC(rodamiento, cantidad));
	}

	public void agregarRemito(Remito rem) {
		remitos.add(rem);
	}

}
